package swt.ieaddr;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ComboBoxEditor;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;

public class IEAddr extends JFrame {
	private JPanel contentPane;
	private BorderLayout borderLayout1 = new BorderLayout();
	/* 用于显示地址,文本 */
	private JLabel jLabel1 = new JLabel();
	/* 下拉列表中 的默认地址 */
	private String[] defaultSites = { "http://www.pku.edu.cn", "http://www.edu.cn", "http://e.pku.edu.cn",
			"http://www.tsinghua.edu.cn", "http://www.google.com" };
	/* 默认编辑地址 */
	private String defaultEdit = "http://www.pku.edu.cn";
	/**/
	private JComboBox jComboBox1 = new JComboBox(defaultSites);

	
	
	public IEAddr(String title) throws HeadlessException {
		super(title);
		// TODO Auto-generated constructor stub
		try {
			jbInit();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	private void jbInit() throws Exception {
		// setIconImage(Toolkit.getDefaultToolkit().createImage(MainFrame.class.getResource("[Your
		// Icon]")));
		contentPane = (JPanel) this.getContentPane();
		// 设置 jLabel1 属性
		jLabel1.setFont(new java.awt.Font("Dialog", 0, 14));
		jLabel1.setHorizontalAlignment(SwingConstants.CENTER);
		jLabel1.setText(" 地 址: ");
		// 设置 jComboBox1 属性
		jComboBox1.setFont(new java.awt.Font("Dialog", 0, 14));
		/*
		 * 关键 JComboBox 可编辑属性为 true 这样可以输入地址 URL
		 */
		jComboBox1.setEditable(true);
		jComboBox1.setMaximumRowCount(5); // 下拉列表最大长度为 5
		jComboBox1.configureEditor(jComboBox1.getEditor(), defaultEdit); // 设置默认浏览器文本为 defaultEdit 字符串
		ComboBoxEditor comboxEditor = jComboBox1.getEditor();// 以默认编辑器来获得 ComboBoxEditor 接口引用
		Component editorComp = comboxEditor.getEditorComponent();// 获得编辑器组件
		// 设置背景色,前景色,字体
		editorComp.setBackground(Color.white);
		editorComp.setForeground(Color.red);
		editorComp.setFont(new Font("Dialog", Font.PLAIN, 14));
		// 添加jComboBox1 的 ActionListener,ComboxListener 是自定义实现ActionListener 接口的内部类
		// 当选中下拉列表中的某个单个时触发事件
		jComboBox1.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				boolean isItemPresent = false;
				// 判断选中的单元格是不是现在的单元,如果不是将isItemPresent属性设置为false
				for (int i = 0; i < jComboBox1.getItemCount(); i++) {
					if (jComboBox1.getItemAt(i).equals(jComboBox1.getSelectedItem())) {
						isItemPresent = false;
						break;
					}
				}
				// 如果 isItemPresent为假,则将选中的单元的地址插入到ComboBox 对象的最前单元ܗ
				if (!isItemPresent) {
					jComboBox1.insertItemAt(jComboBox1.getSelectedItem(), 0);
					isItemPresent = false;
				}
			}
		});
		contentPane.add(jLabel1, BorderLayout.WEST);
		contentPane.add(jComboBox1, BorderLayout.CENTER);
	}
	
	public static void main(String[] args) {
		IEAddr ieAddr = new IEAddr("浏览器地址栏");
		ieAddr.setDefaultCloseOperation(EXIT_ON_CLOSE);
		ieAddr.setSize(500, 50);
		ieAddr.setVisible(true);
		// 设置JFrame是否可以改变大小。 
		ieAddr.setResizable(false); 
		// JFrame打开后居中。 
		ieAddr.setLocationRelativeTo(null);
	}
}
